﻿using DocumentFormat.OpenXml.Lite.DrawingML.Types;
using DocumentFormat.OpenXml.Lite.Xml;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace DocumentFormat.OpenXml.Lite.DrawingML.Visual
{
    [XmlRoot("reflection", Namespace = Constants.Main)]
    public class Reflection : XmlSerializable
    {
        [Optional]
        [XmlElement("blurRad", Namespace = Constants.Main)]
        public Nullable<long> BlurRadius { get; set; }

        [Optional]
        [XmlElement("stA", Namespace = Constants.Main)]
        public Nullable<int> StartOpacity { get; set; }

        [Optional]
        [XmlElement("stPos", Namespace = Constants.Main)]
        public Nullable<int> StartPosition { get; set; }

        [Optional]
        [XmlElement("endA", Namespace = Constants.Main)]
        public Nullable<int> EndAlpha { get; set; }

        [Optional]
        [XmlElement("endPos", Namespace = Constants.Main)]
        public Nullable<int> EndPosition { get; set; }

        [Optional]
        [XmlElement("dist", Namespace = Constants.Main)]
        public Nullable<int> Distance { get; set; }

        [Optional]
        [XmlElement("dir", Namespace = Constants.Main)]
        public Nullable<long> Direction { get; set; }

        [Optional]
        [XmlElement("fadeDir", Namespace = Constants.Main)]
        public Nullable<int> FadeDirection { get; set; }

        [Optional]
        [XmlElement("sx", Namespace = Constants.Main)]
        public Nullable<int> HorizontalRatio { get; set; }

        [Optional]
        [XmlElement("sy", Namespace = Constants.Main)]
        public Nullable<int> VerticalRatio { get; set; }

        [Optional]
        [XmlElement("kx", Namespace = Constants.Main)]
        public Nullable<int> HorizontalSkew { get; set; }

        [Optional]
        [XmlElement("ky", Namespace = Constants.Main)]
        public Nullable<int> VerticalSkew { get; set; }

        [Optional]
        [XmlElement("algn", Namespace = Constants.Main)]
        public Nullable<ST_RectAlignment> Alignment { get; set; }

        [Optional]
        [XmlElement("rotWithShape", Namespace = Constants.Main)]
        public Nullable<bool> RotateWithShape { get; set; }

        public Reflection() { }
    }
}
